var Ajax;
if (Ajax && (Ajax != null)) {
	Ajax.Responders.register({
	  onCreate: function() {
        if($('spinner') && Ajax.activeRequestCount>0)
          Effect.Appear('spinner',{duration:0.5,queue:'end'});
	  },
	  onComplete: function() {
        if($('spinner') && Ajax.activeRequestCount==0)
          Effect.Fade('spinner',{duration:0.5,queue:'end'});
	  }
	});
}
function goTo(ctrl,action,params,update){    
    //document.getElementById('loading').innerHTML='cargando...'    
    new Ajax.Updater(
    {
        success:update
    },'/'+ctrl+'/'+action,{
        asynchronous:true,
        evalScripts:true,
        parameters:params,
        on404:function(e){
            alert("Error..")
        }
    }
    );
    return false;
}
/**
 * funcion: AjaxObserve
 * descripción: Bloquea la ejecucion de un link y ejecuta la funcion javascript
 * parametros:
 *              event, el evento del link como tal
 *              params, los parametros a enviar
 *              update, el div donde se va a pintar los resultados
 */

function ajaxObserve(event,params,update){
    event.stop();
    var link = event.element();
    if(link.href == null){
        return;
    }
    new Ajax.Updater(
    {
        success: $(update)
    },
    link.href,
    {
        evalScripts: true,
        parameters:params
    });
}
/**
 * funcion: observeImpl
 * descripción: Es una implementacion o ejemplo del uso de la funcion ajaxObserve
 * parametros: 
 *              params, los parametros a enviar
 *              update, el div donde se va a pintar los resultados
 */
function observeImpl(params,update){
    ajaxObserve(event,params,update);
}
/**
 * funcion: implode
 * descripcion: une los elementos de un arreglo en una cadena separada por ,
 * parametros: p_array, el arreglo
 */
function implode(p_array){
    var str=''
    for(var i=0;i<p_array.length;i++){
        str+=''+p_array[i]
        if(i<p_array.length-1){
            str+=','
        }
    }
    return str
}
/**
 * funcion: toArray
 * descripcion: convierte un objeto de un formulario en un arreglo.
 * parametros:
 *              p_array, el objeto arreglo. Ej. document.formulario.objetoRepetido
 */
function toArray(p_array){
    var f_array=new Array();
    if(!p_array)return f_array;
    (isNaN(p_array.length))?f_array[0]=p_array:f_array=p_array;
    return f_array;
}
/**
 * funcion: toArrayValues
 * descripcion: convierte un arreglo de elementos en un arreglo de valores solo los que estan checkeados, aplica solo para objetos input.checkbox
 * parametros:
 *              p_array, el arreglo de checkboxes
 */
function toArrayValues(p_array){
    var f_array=new Array();
    if(!p_array)return f_array;
    var j=0;
    for(var i=0;i<p_array.length;i++){
        if(p_array[i].checked){
            f_array[j]=p_array[i].value;
            j++;
        }
    }
    return f_array;
}
